  float4x4 worldViewProjection : WorldViewProjection;

  struct VertexShaderInput {
    float4 position : POSITION;
  };

  struct PixelShaderInput {
    float4 position : POSITION;
    float2 depth : TEXCOORD0;
  };

  PixelShaderInput vertexShaderFunction(VertexShaderInput input) {
    PixelShaderInput output;
    output.position = mul(input.position, worldViewProjection);
    output.depth = output.position.zw;
    return output;
  }

  float4 pixelShaderFunction(PixelShaderInput input): COLOR {
    float t = input.depth.x / input.depth.y;
    return float4(t, t, t, 1);
  }

  // #o3d VertexShaderEntryPoint vertexShaderFunction
  // #o3d PixelShaderEntryPoint pixelShaderFunction
  // #o3d MatrixLoadOrder RowMajor